iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
生成式 AI

RAG自己來系列:客服機器人系列 第 27

[Day 27] 進階設計 - 修改投票按鈕樣式

  • 分享至 

  • xImage
  •  

相信大家在使用投票系統時,多少會覺得,「👍」與「👎」兩個有點不直覺吧,如果能自訂義這部分該有多好

欸!還真的可以,但一樣要使用 javascript 去監聽網頁元素的狀態

首先先觀察網頁元素,可以發現這些「👍」與「👎」是屬於 aria-label="like"aria-label="dislike" 的 tag,所以我的思路也是使用監聽器監聽 document.body 的元素是否有相關元素產生

https://ithelp.ithome.com.tw/upload/images/20241005/20146555SB2o2IfV9M.png

  • script.js

    只要有對應的元素出現在網頁上,就直接修改複寫它的所有子元素,並且修改該元素的內容

    function callback(mutationsList, observer) {
        for (const mutation of mutationsList) {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node => {
                    if (node.nodeType === Node.ELEMENT_NODE) {
                        if (node.matches('footer.svelte-1rjryqp')) {
                            document.querySelector('footer.svelte-1rjryqp').style.display = 'none';
                        }
                        if (node.matches('[aria-label="like"]')) {
                            node.innerHTML = '';
                            node.textContent = '喜歡這則回覆';
                            node.classList.add("vote_style");
                            node.style.width = "175px";
                            node.style.height = "100%";
    
                            node.addEventListener('click', function() {
                                const elements = document.querySelectorAll('.message-buttons-bot');
                                elements.forEach(element => {
                                    element.style.display = 'none';
                                });
                            });
                        }
                        if (node.matches('[aria-label="dislike"]')){
                            node.innerHTML = '';
                            node.textContent = '重新生成回覆';
                            node.classList.add("vote_style");
                            node.style.width = "160px";
                            node.style.height = "100%";
    
                            node.addEventListener('click', function() {
                                document.querySelectorAll('.message-buttons-bot').forEach(element => {
                                    element.style.display = 'none';
                                    is_regenerate = true;
                                });
                            });
                        }
                    }
                });
            }
        }
    }
    

修改後效果如下

https://ithelp.ithome.com.tw/upload/images/20241005/20146555o2rGBrV5zH.png


而我們可以進一步修改按鈕樣式,讓我們再次觀察這些按鈕的屬性,其父節點中有一個 message-buttons-bot 的屬性,而這個看起來是只有在文字框中的這兩顆按鈕才會套用

https://ithelp.ithome.com.tw/upload/images/20241005/201465558hxyz9f4VW.png

所以我們針對這兩顆按鈕去做一點 css 的設定

https://ithelp.ithome.com.tw/upload/images/20241005/20146555TZIIsMwAN3.png

而修改後的效果長這樣,有做邊框的修飾,也有做滑鼠覆蓋的效果

https://ithelp.ithome.com.tw/upload/images/20241005/20146555NfKBmFnXur.png


上一篇
[Day 26] 進階設計 - CSS & JS 微調頁面
下一篇
[Day 28] 進階設計 - 分頁跳轉
系列文
RAG自己來系列:客服機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言